home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 June / EnigmA AMIGA RUN 19 (1997)(G.R. Edizioni)(IT)[!][issue 1997-06][EAR-CD III].iso / softwareupdate / system / atapi_pnp300 / developer_kit / docs / developer.readme < prev    next >
Text File  |  1996-07-16  |  3KB  |  117 lines

  1.                 CONSIGLI PER UNA BUONA PROGRAMMAZIONE DEL
  2.  
  3.                     cd.device Atapi Plug'n Play
  4.                     ---------------------------
  5.  
  6.  
  7.                    Georg Campana & Marco Campinoti
  8.  
  9.  
  10.  
  11.   Vi diamo qui alcuni consigli per una corrtta programmazione
  12.   del ns device :
  13.  
  14.  
  15.   - L'unità 0 corrisponde sempre alla prima periferica del tipo atapi
  16.     nella catena del bus ide .
  17.     Quindi collegando due unità atapi il master sarà l'unità 0 ,
  18.     e lo slave l'unità 1 .
  19.  
  20.   - I comandi relativi alla riproduzione di tracce Audio non
  21.     sono ancora implementati , ma lo saranno nelle prossime versioni .
  22.     Vi consigliamo quindi di tentarne l'uso nei Vostri programmi gestendo
  23.     però l'errore ritornato (CDERR_NOCMD) , in caso di insuccesso passate
  24.     all'uso del comando CD_SCSI_DIRECT .
  25.  
  26.     Esempio :
  27.  
  28.     .....
  29.     .....
  30.     .....
  31.  
  32.     ioreq->io_Command = CD_PLAYLSN ;
  33.     ioreq->io_Offset  = 94360;
  34.     ioreq->io_Length  = 9750;
  35.     
  36.     DoIO (ioreq);
  37.  
  38.     if(error = ioreq->io_Error)  /* c'è un errore */
  39.     {
  40.        if(error == CDERR_NOCMD)  /* comando non esiste */
  41.        {
  42.          .....
  43.          ..... /* prepara struttura SCSICmd */
  44.          .....
  45.  
  46.          ioreq->io_Command = CD_SCSI_DIRECT ;
  47.          ioreq->io_Data    = &scsicmd  ; /* struttura SCSICmd */
  48.          ioreq->io_Length  = sizeof( struct SCSICmd ) ;
  49.          
  50.          DoIO (ioreq);
  51.        }
  52.        else
  53.        {
  54.            /* Altro errore */
  55.  
  56.        }
  57.     }
  58.     else
  59.     {
  60.  
  61.       /*  Il comando è implementato  */
  62.     }
  63.  
  64.     ......
  65.     ......
  66.  
  67.     Tra le altre cose facendo in questo modo i propri programmi gireranno
  68.     alla perfezione anche sui CD³² ed altri cd.device che seguono i comandi
  69.     I/O Commodore .
  70.  
  71.   - Esiste la possibilità di riconoscere se il device con cui si tratta è del 
  72.     tipo ATAPI . Per questo scopo è stato implementato il comando 
  73.     CD_ATAPI_IDENTIFY che ritorna 4 bytes identificativi del produttore 
  74.     del device .
  75.  
  76.     Esempio :
  77.  
  78.     .....
  79.     .....
  80.     .....
  81.  
  82.  
  83.     ioreq->io_Command = CD_ATAPI_IDENTIFY ; /* cmd da inviare   */
  84.     ioreq->io_Lenght  = 0                 ; /* deve essere 0 !! */
  85.  
  86.     DoIO(ioreq) ;
  87.     
  88.     if(error = ioreq->io_Error)   /* non è un cd.device atapi */
  89.     else
  90.     {
  91.         id = (ULONG)ioreq->io_Data ; /* contiene 'CD++' */
  92.                                      /* OK è Atapi      */
  93.         .....
  94.         .....
  95.     
  96.     }
  97.  
  98.     Invitiamo gli intraprendenti programmatori di device del tipo 
  99.     cd.device a implementare questo comando inserendo il loro 
  100.     identificativo di 4 lettere in io_Data ( direttamente ,
  101.     come se fosse una ULONG e non un APTR ).
  102.  
  103.  
  104.   - Essendo di mentalità aperta , invitiamo tutti a inviarci le loro
  105.     realizzazioni e/o consigli e se dovessimo trovare interessante
  106.     la vostra applicazione non esiteremo a includerla nella prossima
  107.     release del pacchetto .
  108.  
  109.  
  110.  
  111.  
  112.  
  113.     Buona programmazione a tutti
  114.  
  115.  
  116.  
  117.